/**
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2009，所有权利保留。
 * 
 * 项目名：	rumba-web
 * 文件名：	RFieldBox.java
 * 模块说明：	
 * 修改历史：
 * Aug 28, 2009 - lxm - 创建。
 */
package com.hd123.rumba.gwt.widget2.client.form;

import com.google.gwt.user.client.ui.Widget;
import com.hd123.rumba.gwt.widget2.client.fielddef.FieldDef;
import com.hd123.rumba.gwt.widget2.client.fielddef.HasFieldDef;

/**
 * 表单字段控件，设计用于修饰其它界面控件可以作为表单字段。
 * 
 * @author lxm
 * 
 */
public class RFieldBox extends RFieldComposite implements HasFieldDef {

  /**
   * 创建对象实例。
   * 
   * @param widget
   *          指定被修饰的界面控件。not null。
   */
  public RFieldBox(Widget widget) {
    super();
    if (widget == null)
      throw new RuntimeException("指定的参数widget不允许为null。");
    initWidget(widget);
  }

  /**
   * 创建对象实例。
   * 
   * @param widget
   *          指定被修饰的界面控件。not null。
   * @param fieldDef
   *          指定字段定义。
   */
  public RFieldBox(Widget widget, FieldDef fieldDef) {
    this(widget);
    setFieldDef(fieldDef);
  }

  private FieldDef fieldDef;

  public FieldDef getFieldDef() {
    return fieldDef;
  }

  public void setFieldDef(FieldDef fieldDef2) {
    this.fieldDef = fieldDef2 == null ? null : fieldDef2.clone();
    if (this.fieldDef == null)
      return;

    setFieldCaption(this.fieldDef.getCaption());
    setRequired(this.fieldDef.isRequired());
  }

}
